package com.sino.second.dao;

import java.util.Collection;
import java.util.List;

import com.sino.bean.TblZhuanjiarukuxinxibiao;
import com.sino.second.bean.TblSystemparam;
import com.sino.second.bean.TblXmjg1;
import com.sino.util.page.PagerModel;

public interface IExpertsReviewDAO {

	/**
	 * 通过项目ID 专家ID确定一个项目一个专家打分情况
	 * 
	 * @param xk
	 *            学科
	 * @param zlid
	 *            专利ID
	 * @param zjid
	 *            专家ID
	 * @return
	 */
	public List findReviewsList(String zlid, Integer zjid);

	/**
	 * 保存项目评审信息
	 * 
	 * @param o
	 */
	public void saveOrUpdateReviews(Collection o);
	public void saveOrUpdateReviews1(Object o);

	/**
	 * 专家列表
	 * 
	 * @param xk
	 *            学科
	 * @param xkId
	 *            专利ID
	 * @return
	 */
	public List findReviewXmList(int firstRow, int maxRow, String xkId,
			String hqlWhere);

	/**
	 * 专家列表记录数
	 * 
	 * @param xk
	 *            学科
	 * @param xkId
	 *            专利ID
	 * @return
	 */
	public int findReviewXmCount(String xkId, String hqlWhere);

	/**
	 * 通过专家ID取出专家所评项目
	 * 
	 * @param zjid
	 * @return
	 */
	public List findReviewXmListByZjId(Integer zjid, String hqlWhere);

	/**
	 * 通过专利ID取出评审表1 表2 的专利信息
	 * 
	 * @param zlid
	 * @param hqlWhere
	 * @return
	 */
	public List findReviewXmListByZlId(String zlid, String hqlWhere);

	/**
	 * 保存评分结果表
	 * 
	 * @param o
	 */

	public void saveReviewsResults(Object o);
	
	public void saveOrUpdateTime(TblSystemparam t,TblSystemparam t2);

	/**
	 * 结果信息表
	 * 
	 * @param hqlWhere
	 * @return
	 */

	public List findReviewResultsList(String hqlWhere);
	/**
	 * 分页列出结果信息表
	 * 
	 * @param hqlWhere
	 * @return
	 */

	public PagerModel findReviewResultsPageList(String hqlWhere);

	/**
	 * 通过专利ID取结果表
	 * 
	 * @param zjid
	 * @return
	 */

	public Object findReviewResultsByZlid(String zjid);

	/**
	 * 获得记录数
	 * 
	 * @param hqlWhere
	 * @return
	 */

	public int findReviewCount(String hqlWhere);

	/**
	 * 取得项目评审分数列表
	 * 
	 * @param firstRow
	 * @param maxRow
	 * @param hqlWhere
	 * @return
	 */
	public List<?> findReviewXmFsList(String hqlWhere);

	/**
	 * 取得项目评审分数列表的记录条数
	 * 
	 * @param hqlWhere
	 * @return
	 */
	public int findCountReviewXmFsList(String hqlWhere);

	public List<TblXmjg1> findReviewXmJgList(String hqlWhere);

	/**
	 * 更新评分结果
	 * 
	 * @param o
	 */
	public void updateReviewsResults(Object o);

	/**
	 * 更新评审状态
	 * 
	 * @param state
	 */
	public void updateReviewsState(String basicInfoId, String state);

	/**
	 * xyw 根据项目id查出有多少个专家为该项目打过分并求出专家
	 */
	public List findZhuanjiaByZlid(String zlid);

	/**
	 * xwy 查总分根据
	 */
	public Object findSumFenshuByZlid(String zlid);

	/**
	 * xyw 根据项目id查出有多少个专家为该项目打过分
	 */
	public int findCountZhuanjiaByZlid(String zlid);

	/**
	 * xyw 根据项目id查找已经评审的专家
	 * 
	 */
	public List<TblZhuanjiarukuxinxibiao> listReviewExpertByBasicInfoId(
			String basicInfoId);

	/**
	 * xyw 根据zlid查该项目 state是否被审核过 0评审中 1审核完毕
	 */
	public Object findStateByZlid(String zlid);
	
	
	/**
	 * xyw 根据zlid查找项目信息
	 */
	public Object findXmByZlid(String zlid);
	
	/**
	 * xyw根据xkid 和专业组id查找专家个数
	 * @param xmpsmcId
	 * @param zhuanyeId
	 * @param hqlWhere
	 * @return
	 */
	public Integer findZjpsfpCountByXmpsmcId(String xmpsmcId, String zhuanyeId,
			String hqlWhere);
	/**
	 * xyw 根据xkid找基本信息表
	 *     项目的个数
	 */
	public Integer findXmCountByXkId(String xkId);
	/**
	 * xyw 根据xkid找分数表1不重复的
	 *     项目的个数
	 */
	public Integer findFsCountByXkId(String xkId);
	
	
	/**
	 * 通过专利id查找每个专家对该项目的评分信息
	 * @param zlid
	 * @param hqlWhere
	 * @return
	 */
	public List listReviewFsList(String zlid,String hqlWhere);
	
	/**
	 * 根据条件列出已评分的专家id
	 * @param hqlWhere
	 * @return
	 */
	public List<Integer> listReviewFsExpertIdList(String hqlWhere);
	/**
	 * 根据专家id与条件列出项目得分排序
	 * @param expertId
	 * @param hqlWhere
	 * @return
	 */
	public List listReviewXmIdList(int expertId,String hqlWhere);
	
}
